# Главный план разработки игры

## Договоренности и ограничения со старта проекта

### Командные

1. Проект **не коммерческий**, но если он что-то заработает - отлично.
1. Проект **отрытый** любой может присоединиться и помогать.
1. Проект для фана, использование самых передовых технологий,
   инструментов, форматов и т.д.
1. Цель проекта сделать **Match3 игру**, качественную, что бы и игрокам,
   и студентам было всем было интересно как играть так и учиться делать игры по ней.
1. Геймплей и техническую экспертизу - беру на себя [leanid](https://github.com/leanid)

### Технические

1. Все пишем сами либо берем полностью открытый код (boost, SDL, ...)
1. Графику реализуем через модный Vulkan API
1. Поддерживаем все возможные платформы (Linux, Android, Windows, MacOS, iOS, Web, ...)
1. Система сборки - модный современный cmake+CMakePresets.json
1. Можно использовать самый передовой С++20 или даже С++23 - если компилятор позволяет
1. Если понадобились скрипты - предпочитаем Python желательно самый свежий
1. Правила форматирования кода уже есть в корне проекта для c++, cmake,
   если надо добавьте туда дополнительные
1. Документация по проекту находится в самом проекте в файлах формта *.md
1. Обсуждение проекта и его разработки может вестись где удобно, но резултат
   нужно представить пулл-реквестом в впроект в формате *.md

## План

### Техническая подготовительная часть

#### Подготовка Render Api для игры

1. Поверх SDL api
1. Нужен Vulkan render способный отрисовать 2d спрайты и анимацию
1. Отрисовать нужно уметь как в окно так и в файл (понадобиться для тестов)
1. Сразу продумать возможность использовать кастомные шейдеры(материалы)
1. Поддерживать динамическое изменение размеров окна, экрана
1. Разработать отдельное приложение с демонстрацией всех возможностей Render Api

#### Подготовка Input Api для игры

1. Поверх SDL api
1. Игра должна работать на любой платформе и с использованием любого ввода
1. Поддержимаем мышку, сенсорные экраны, геймпад, клавиатуру (если игрок подключил
   мышку, клавиатуру или даже геймпад через блютуз к своему Андроид телефону
   у него все это тоже должно работать и играться)
1. Разработать отдельное приложение с демонстарией Input Api

#### Подготовка Sound Api для игры

1. Поверх SDL api - используем [MojoAL](https://github.com/icculus/mojoAL.git)
1. Апи для проигрывания музыки, затухания, нарастания плавного
1. Проигрывание коротких звуков, звуков эффектов
1. Глобальная пауза-возобновление
1. Поддержка стреео звука (2-канала)
1. Программа с демонстарией Sound Api

### Геймлейная подготовительная часть

### Разработка форматов, инструментов, интерфейсов систем

#### Инструмент -- Редактор уровней/игры
1. Наличие редактора уровней с возможностью делать все drag and drop.
1. Редактор объектов
1. Поддержка вызуального языка сценарив (что-то подобное BP от UE)???
1. Редактор работает под Win, Mac, Linux. (Какой UI либу/фреймворк???)
1. Реализовать простую заготовку/макет интерфейса для редактора. 

### Разработка геймплея

### Реализация игры

### Сборка пакетов игры под все возможные платформы (портирование)
